{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# This allows multiple outputs from a single jupyter notebook cell:\n",
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = \"all\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(252, 9)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>Volume</th>\n",
       "      <th>UpperB</th>\n",
       "      <th>LowerB</th>\n",
       "      <th>PercentB</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-07-01</th>\n",
       "      <td>132.089996</td>\n",
       "      <td>134.100006</td>\n",
       "      <td>131.779999</td>\n",
       "      <td>133.919998</td>\n",
       "      <td>117.161659</td>\n",
       "      <td>202385700</td>\n",
       "      <td>132.373927</td>\n",
       "      <td>125.316073</td>\n",
       "      <td>1.219057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-05</th>\n",
       "      <td>133.779999</td>\n",
       "      <td>134.080002</td>\n",
       "      <td>133.389999</td>\n",
       "      <td>133.809998</td>\n",
       "      <td>117.065437</td>\n",
       "      <td>165936000</td>\n",
       "      <td>133.254297</td>\n",
       "      <td>124.912703</td>\n",
       "      <td>1.066618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-06</th>\n",
       "      <td>133.490005</td>\n",
       "      <td>134.139999</td>\n",
       "      <td>133.110001</td>\n",
       "      <td>133.970001</td>\n",
       "      <td>117.205429</td>\n",
       "      <td>143331600</td>\n",
       "      <td>134.040915</td>\n",
       "      <td>124.627085</td>\n",
       "      <td>0.992467</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close   Adj Close  \\\n",
       "Date                                                                     \n",
       "2011-07-01  132.089996  134.100006  131.779999  133.919998  117.161659   \n",
       "2011-07-05  133.779999  134.080002  133.389999  133.809998  117.065437   \n",
       "2011-07-06  133.490005  134.139999  133.110001  133.970001  117.205429   \n",
       "\n",
       "               Volume      UpperB      LowerB  PercentB  \n",
       "Date                                                     \n",
       "2011-07-01  202385700  132.373927  125.316073  1.219057  \n",
       "2011-07-05  165936000  133.254297  124.912703  1.066618  \n",
       "2011-07-06  143331600  134.040915  124.627085  0.992467  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>Volume</th>\n",
       "      <th>UpperB</th>\n",
       "      <th>LowerB</th>\n",
       "      <th>PercentB</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-06-27</th>\n",
       "      <td>132.419998</td>\n",
       "      <td>133.429993</td>\n",
       "      <td>131.970001</td>\n",
       "      <td>133.169998</td>\n",
       "      <td>118.980804</td>\n",
       "      <td>108088000</td>\n",
       "      <td>136.447962</td>\n",
       "      <td>128.140042</td>\n",
       "      <td>0.605441</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-28</th>\n",
       "      <td>132.289993</td>\n",
       "      <td>132.990005</td>\n",
       "      <td>131.279999</td>\n",
       "      <td>132.789993</td>\n",
       "      <td>118.641281</td>\n",
       "      <td>169242100</td>\n",
       "      <td>136.500761</td>\n",
       "      <td>128.219241</td>\n",
       "      <td>0.551922</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-29</th>\n",
       "      <td>135.199997</td>\n",
       "      <td>136.270004</td>\n",
       "      <td>134.850006</td>\n",
       "      <td>136.100006</td>\n",
       "      <td>121.598610</td>\n",
       "      <td>212250900</td>\n",
       "      <td>136.721010</td>\n",
       "      <td>128.792993</td>\n",
       "      <td>0.921670</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close   Adj Close  \\\n",
       "Date                                                                     \n",
       "2012-06-27  132.419998  133.429993  131.970001  133.169998  118.980804   \n",
       "2012-06-28  132.289993  132.990005  131.279999  132.789993  118.641281   \n",
       "2012-06-29  135.199997  136.270004  134.850006  136.100006  121.598610   \n",
       "\n",
       "               Volume      UpperB      LowerB  PercentB  \n",
       "Date                                                     \n",
       "2012-06-27  108088000  136.447962  128.140042  0.605441  \n",
       "2012-06-28  169242100  136.500761  128.219241  0.551922  \n",
       "2012-06-29  212250900  136.721010  128.792993  0.921670  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "idf = pd.read_csv('../data/SPY_20110701_20120630_Bollinger.csv',index_col=0,parse_dates=True)\n",
    "idf.shape\n",
    "idf.head(3)\n",
    "idf.tail(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "#### Let's grab 5 months of data from the input data frame:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = idf.loc['2011-07-01':'2011-12-30',:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'0.12.6a4'"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import mplfinance as mpf\n",
    "mpf.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import copy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hasattr(fig,'mpfstyle')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "fig.mpfstyle = 'default'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hasattr(fig,'mpfstyle')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ax = fig.add_subplot(2,2,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ax.style = 'default'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ax.style"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ax.xxx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from mplfinance._mplrcputils import rcParams_to_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "STOP HERE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "d = {'axes.edgecolor': 'white',\n",
    " 'axes.facecolor': '#0b0b0b',\n",
    " 'axes.grid': True,\n",
    " 'axes.labelcolor': 'white',\n",
    " 'figure.dpi': 100.0,\n",
    " 'figure.edgecolor': 'black',\n",
    " 'figure.facecolor': 'black',\n",
    " 'figure.figsize': [6.4, 4.8],\n",
    " 'figure.subplot.bottom': 0.11,\n",
    " 'grid.color': '#999999',\n",
    " 'grid.linestyle': '--',\n",
    " 'lines.color': 'white',\n",
    " 'lines.linewidth': 1.0,\n",
    " 'patch.edgecolor': 'white',\n",
    " 'savefig.edgecolor': 'black',\n",
    " 'savefig.facecolor': 'black',\n",
    " 'text.color': 'white',\n",
    " 'xtick.color': 'white',\n",
    " 'ytick.color': 'white'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "d = {\n",
    "    'figure.edgecolor': 'black',\n",
    "    'figure.facecolor': 'black',\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "d = {\n",
    "    'figure.dpi': 100.0,\n",
    "    'figure.edgecolor': 'black',\n",
    "    'figure.facecolor': 'black',\n",
    "    'figure.figsize': [6.4, 4.8],\n",
    "    'figure.subplot.bottom': 0.11,\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams.update(d)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "external_axes_mode = True\n"
     ]
    },
    {
     "data": {
      "image/png": "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HT4vKiqKrl+/7tCS5tLAgQNp6dKldOXKFUHeDNgMRj+wWq3o2bMngoOD+bwDBw6gsrISNpsNTz/9NH799VdkZ2cDACIjI3Ho0CHMnj0bVquVnzEnRSIjI1FQUICvv/4aZrMZALB9+3b88MMP+Pzzz/Hwww8jJycHixcvxr333otOnTrhwIEDmDdvnmS0BQUF4fHHH8fGjRuxevVqTJo0Ca+//joAYNWqVQAcZ5feeeed+POf/wwigl6vh8ViEV2HTqfDtWvXkJGRgeLiYrz66qtISEgAACxfvhxEBLVaDYvFgrfffhvLli2DUqlEVVUVrl+/Llq53REeHo7Lly/jm2++AVDz21+6dAnfffcdOnfuDKAmEoSL/igrK8OhQ4fw+OOP48SJE6KV25nbbrsN586dw2effQagJrqoqKgIe/fu5Wdf2lNdXY2ioiLExsYKpkP0J5bcklarpS+++IIyMjJcogYGDBhAu3btovfee8/td6XaoubS/Pnz6dSpU/zfXNyxWq2mn376iXbt2sV/5tzylFK3zm233Ubx8fEE1LyCf/TRR3Ts2DG3LWyNRkP9+/fn9UjFRvavzf369aMVK1bQ7t27aerUqXy+fay1VFPr1q3pwQcfdMlfsmQJffnll26/06pVK9HL7ZwiIyNp5syZLvnff/89zZs3z+13BK5L4v8IckxPPPEEGY1GhxuHS4mJiVRZWemxH0vKqVevXnT58mWH11POYffv359+//13evTRRwmQ9sQR5xQdHU0fffQRHT9+nHfY7dq1o4ceesjhOClq4h6Ct9xyC++wuS6RzMxMl243uaS0tDRat24d/3dKSgotWrRI9HL5mr799lt64403+L9nzJhBkyZNqo9riS9WrmnhwoV08+ZN+stf/kLNmjXj8x944AHKycmhli1bil5GX1Pz5s1pwYIFlJ+fTwkJCQ6ftWvXjn7++WchQpBESf369aMPP/yQjh49Ss8++yw/jiB2uXxJnMPeuXMn7dixg6xWK+n1etHL5U969dVX+bDDt956i6qqqiTVR+1tWrlyJb3wwgu8jps3b1Lfvn3r41rii5Vq6t+/f52vMW+//TZZLBZauHAhxcfHU48ePSg7O5uys7NFL7+/qXfv3vTpp59SXl4evfTSS3y+Wq2m/Px8t28TcklRUVH06aefktVqpf3790tqUNTbNGDAADp/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\n",
      "text/plain": [
       "<Figure size 800x575 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rc1 = copy.deepcopy(plt.rcParams)\n",
    "s = mpf._styles._get_mpfstyle('nightclouds')\n",
    "mpf._styles._apply_mpfstyle(s)\n",
    "rc2 = copy.deepcopy(plt.rcParams)\n",
    "fig = plt.figure()\n",
    "ax3 = fig.add_subplot(2,2,1)\n",
    "mpf.plot(df,figscale=1,fig=fig,ax=ax3,style='nightclouds',type='candle')\n",
    "rc3 = copy.deepcopy(plt.rcParams)\n",
    "#fig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "rc4 = copy.deepcopy(plt.rcParams)\n",
    "fig = plt.figure()\n",
    "s = mpf._styles._get_mpfstyle('nightclouds')\n",
    "mpf._styles._apply_mpfstyle(s)\n",
    "ax3 = fig.add_subplot(2,2,1)\n",
    "rc5 = copy.deepcopy(plt.rcParams)\n",
    "mpf.plot(df,figscale=0.85,fig=fig,ax=ax3,style='nightclouds',type='candle')\n",
    "rc6 = copy.deepcopy(plt.rcParams)\n",
    "#fig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "rc3 == rc1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "df1 = rcParams_to_df(rc1,name='rc1')\n",
    "df2 = rcParams_to_df(rc2,name='rc2')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.concat([df1,df2],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "dif = df[df['rc1'] != df['rc2']].dropna(how='all')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "dif"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from mplfinance._mplrcputils import compare_styles"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "tup = compare_styles('dark_background','fast')\n",
    "tup[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "dif['rc2']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "dif['rc2'].to_dict()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "d = {'axes.edgecolor': 'white',\n",
    " 'axes.facecolor': '#0b0b0b',\n",
    " 'axes.grid': True,\n",
    " 'axes.labelcolor': 'white',\n",
    " 'figure.dpi': 100.0,\n",
    " 'figure.edgecolor': 'black',\n",
    " 'figure.facecolor': 'black',\n",
    " 'figure.figsize': [6.4, 4.8],\n",
    " 'figure.subplot.bottom': 0.11,\n",
    " 'grid.color': '#999999',\n",
    " 'grid.linestyle': '--',\n",
    " 'lines.color': 'white',\n",
    " 'lines.linewidth': 1.0,\n",
    " 'patch.edgecolor': 'white',\n",
    " 'savefig.edgecolor': 'black',\n",
    " 'savefig.facecolor': 'black',\n",
    " 'text.color': 'white',\n",
    " 'xtick.color': 'white',\n",
    " 'ytick.color': 'white'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
